package com.numberone.iotplatform.dto;


import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

/**
 * 数据传输对象 (DTO)，用于存储和传输设备扫描任务的状态。
 */
@Data
// 这个注解表示，如果字段值为 null，则在序列化为 JSON 时忽略该字段
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ScanStatus {

    /**
     * 任务的当前状态。
     * 可选值: PENDING (等待开始), RUNNING (正在运行), COMPLETED (完成), FAILED (失败)
     */
    private String status = "PENDING";

    /**
     * 当前已扫描的 IP 数量。
     */
    private int progress = 0;

    /**
     * 本次扫描任务的总 IP 数量。
     */
    private int total = 0;

    /**
     * 已发现的有效设备数量。
     */
    private int foundCount = 0;

    /**
     * 如果任务失败，这里会记录错误信息。
     */
    private String error;

    /**
     * 增加进度的同步方法，确保线程安全。
     */
    public synchronized void incrementProgress() {
        this.progress++;
    }

    /**
     * 增加已发现设备数量的同步方法，确保线程安全。
     */
    public synchronized void incrementFoundCount() {
        this.foundCount++;
    }
}